A Lightweight Method for Building Reliable Operating Systems Despite Unreliable Device Drivers
نویسندگان
چکیده
It has been well established that most operating system crashes are due to bugs in device drivers. Because drivers are normally linked into the kernel address space, a buggy driver can wipe out kernel tables and bring the system crashing to a halt. We have greatly mitigated this problem by reducing the kernel to an absolute minimum and running each driver as a separate, unprivileged process in user space. In addition, we implemented a POSIX-conformant operating system as multiple user-mode processes. In this design, all that is left in kernel mode is a tiny kernel of under 3800 lines of executable code for catching interrupts, starting and stopping processes, and doing IPC. By moving nearly the entire operating system to multiple, protected user-mode processes we reduce the consequences of faults, since a driver failure no longer is fatal and does not require rebooting the computer. In fact, our system incorporates a reincarnation server that is designed to deal with such errors and often allows for full recovery, transparent to the application and without loss of data. To achieve maximum reliability, our design was guided by simplicity, modularity, least authorization, and fault tolerance. This paper discusses our lightweight approach and reports on its performance and reliability. It also compares our design to other proposals for protecting drivers using kernel wrapping and virtual machines.
منابع مشابه
A Proposal for a Lightweight Rigorous UML-Based Development Method for Reliable Systems
A lightweight UML-based software development method for building reliable software systems is proposed. It attempts to combine the coding emphasis of Extreme Programming with the utility of modelling, while offering a counterpoint to Extreme Modelling. The method is built atop of a subset of UML, making use of contracts for documentation and for run-time (and potentially static) checking. Rules...
متن کاملReliable Corba Event Channels
This paper presents a pragmatic way to build a Reliable CORBA Event Service. Our approach is pragmatic in the sense that, rather than building the service from scratch, we show how to obtain it, through a simple transformation, from any standard (unreliable) CORBA 2.0 Event Service. Our extension does not introduce any modiication to the CORBA speci-cation, nor any communication overhead. The R...
متن کاملPosition: Lightweight static resources - Sexy types for embedded and systems programming
It is an established trend to develop low-level code—embedded software, device drivers, and operating systems—using high-level languages, especially functional languages with advanced facilities to abstract and generate code. To be reliable and secure, low-level code must correctly manage space, time, and other resources, so special type systems and verification tools arose to regulate resource...
متن کاملReliable Device Drivers Require Well-Defined Protocols
Current operating systems lack well-defined protocols for interaction with device drivers. We argue that this hinders the development of reliable drivers and thereby undermines overall system stability. We present an approach to specify driver protocols using a formalism based on state machines. We show that it can simplify device programming, facilitate static analysis of drivers against proto...
متن کاملPerformance Prediction of a Flexible Manufacturing System
The present investigation presents a stochastic model for a flexible manufacturing system consisting of flexible machine, loading/unloading robot and an automated pallethandling device. We consider unreliable flexible manufacturing cell (FMC) wherein machine and robot operate under individual as well as common cause random failures. The pallethandling system is completely reliable. The pallet o...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006